package cn.edu.scau.cmi.wuzhenzhou.singleton;

import java.net.URL;
import java.util.ResourceBundle;

import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.text.Text;

public class MyController implements Initializable{
	@FXML
	private Text schema; // 单例模式or多例模式
	@FXML
	private Text nameSchema; // 各模式下的输入提示
	@FXML
	private TextArea area; // 创建结果的输出区域
	@FXML
	private TextField myTextField; // 输入的区域
	
	String[] MarshalName = new String[Marshal.N];
	
	@Override
	public void initialize(URL location, ResourceBundle resources) {
		// TODO Auto-generated method stub
		
	}
	
	public void changeSchema(ActionEvent event) { // 点击切换时的提示转换
		if(schema.getText().equals("单例")) { // 显示单例时切换为多例模式
			schema.setText("多例");
			nameSchema.setText("请输入元帅名字:");
		}else { // 显示多例时切换为单例模式
			schema.setText("单例");
			nameSchema.setText("请输入主席名字:");
		}
		myTextField.setText("");
		area.setText("");
			
	}
	
	public void created(ActionEvent event) { // 创建功能
		//声明对象
		Chairman chairman = null; // 主席
		Marshal marshal = null; // 元帅
		String wenben = null; // 输出区域文本内容
		int flag = 0;
		
		String name = myTextField.getText(); // 输入的内容
		
		if(!"".equals(name)) {
			if(schema.getText().equals("单例")) { // 根据模式创建主席对象
				chairman = Chairman.getInstance(name); // 实例对象
				wenben = area.getText(); // 获取输出区域的文本内容
				if(!("").equals(wenben))
					area.appendText(chairman.getName() + chairman + "\n" );
				else
					area.setText(chairman.getName() + chairman + "\n");
			}else { // 根据模式创建元帅对象
				for (int i = 0; i < Marshal.num; i++) {
					if(name.equals(MarshalName[i]))
						flag = 1;
				}
				if(flag == 1) {
					area.appendText("已存在<" + name + ">元帅，请不要再次创建\n");
				}else {
					marshal = Marshal.getInstance(name); // 实例对象
					MarshalName[Marshal.num - 1] = name;
					if(marshal == null) { // 创建10个对象后，返回null
						area.appendText("你已经有10个元帅了，不需要再创建了\n");
					}else {
						wenben = area.getText(); // 获取输出区域的文本内容
						if(!("").equals(wenben))
							area.appendText(marshal.getName() + marshal + "\n");
						else
							area.setText(marshal.getName() + marshal + "\n");
					}
				}
			}
		}else {
			area.appendText("请输入名字!\n");
		}
	}
	
}
